��ланки на документи

Модулът за бланки на документи на OBS ERP Ви позволява да представяте информацията, съхранена в различните модули, в PDF документи. Например: можете да създадете персонализирана бланка за модул Финанси ⇨ Приходи, която да съдържа брандирана фактура, съобразена с вътрешното законодателство или шаблон за модул "Договори", който съдържа информация за стандартния договор, който подписвате с вашите клиенти.

OBS ERP е оборудван с генератор на документи на база бланки. Той може да конвертира променливите в шаблоните в текст. Нека вземем модул "Договори" за пример. Можем да наречем променлива в бланката - "~~date_of_issue~~" (дата на издаване, която кореспондира със съответното поле в модул "Договори"). OBS ERP ще конвертира променливата в действителната дата на издаване на договора. Този процес е описан подробно долу. 


Забележка: Генераторът на документи на база бланки се нарича OB1 и е разработен от OBS ERP. 

Бланките за документи могат да се намерят чрез Админ ⇨ Бланки ⇨ Документи. OBS ERP се предлага с набор от бланки по подразбиране за някои от основните модули (фактури, оферти, отпуски, и т.н.). Можете да редактирате вградените бланки, така че да отговарят на вашите нужди. 


Забележка: Не забравяйте да направите резервно копие на оригиналната бланка, преди да нанесете промени. 

Нека отворим една от най-сложните бланки, зададени по подразбиране - Приходи (Фактури), до която можем да стигнем чрез Админ ⇨ Бланки ⇨ Документи ⇨ Invoice ⇨ Редактирай (опцията "Редактирай" се появява, когато кликнем върху идентификационния номер на бланката - 1). Шаблонът е показан на Фиг. 1. 



Фиг. 1

Както се вижда, можете да настроите вида и големината на шрифта, да добавите горен и долен колонтитул и да контролирате номерацията на страниците. Дългият син бутон "Модули" (най-долу) се използва за да се уточни в кои модули ще се използва съответната бланка.
 
В полето съдържание, можем да видим какво съдържа бланката и да нанесем нужните промени. (Фиг. 2)


Фиг. 2

За да промените съдържанието на бланката, трябва първо да запазите промените си (зеления бутон "Запиши"), след което да презаредите бланката. Бутонът за презареждане е показан на Фиг. 2 (ограден в синьо). За да видите крайния резултат, отворете целевия модул (в този случай "Приходи"), създайте запис и кликнете върху PDF бутона над записа (Фиг. 3). OBS ERP ще изготви PDF документ, използвайки данните от вашата бланка и тези от записа.


Фиг. 3

Процесорът за бланки поддържа следните характеристики:
  • променливи
  • функции
  • заместване на текст
  • цикъл
  • условна оценка
Показване на всички налични променливи
В зависимост от модула, за който подготвяте бланка, ще имате различен набор от променливи, които ще имате възможността да използвате. За да проверите кои променливи са налични, напишете следната функция където и да е в бланката, запишете промените и презаредете. 

~.show_vars.~​
Резултатът ще бъде видим в целевия модул, както е описано по-горе. Например:

VAR VALUE
amount 8700.00
contract_id 2015-09-23 №28 Test Customer
... ....

Сега знаем имената на променливите. Можем да изкараме на показ стойността на променлива, използвайки следния затварящ символ:
~~variable~~​
Пример:
~~invoice_id~~​
Резултат (номер на фактура):
14​


Ключова дума, която може да преведете в модул "Преводи"

Затварящ символ
~_variable_~​
Пример:
~_qty_~​



Създаване на таблица със стойности
  • Таблица с автоматично оформление:
    Затварящ символ:
    ~#table_name^table #~​
    Пример:
    ~#invoice_items^table;#~​
    Резултат:
    # name qty price
    1 Test 1 100

    Можете да пропуснете колона, като добавите ключовата дума за пропускане, както е показано по-дол:
    ~#invoice_items^table; skip:photo; #~ (така ще се пропусне колоната)

  • Таблица с персонализирани колони
    Затварящ символ:
    ~#table_name^table; ~column_one~ ~column_two~ ~column_three~ #~​
    Пример:
    ~#invoice_items^table; ~SEQ~ ~name~ ~qty~ ~price_per_unit~ ~discount~ ~line_total~#~​

    ~SEQ~ ще създаде колона с последователни номера, започващи от 1.

    Резултат: 

    # name Quantity Price per unit Discount Total
    1 Test 1 100 1 99

  • Функции 
    Данните от колоната могат да бъдат предадени на функция. Например:

    За да покажем снимка в таблицата използваме функцията showImageInTD:

    ~#quotation_items^table; ~SEQ~ ~.showImageInTD^~product_image~,products,3.5.~ ~price_per_unit~ #~

    Можете да използвате всяка функция за обработка на данни в таблицата.
  • Таблица със заглавна част
    Тази секция показва как да създадете таблици със заглавна част, като тази по-долу:

    ✎ Създайте нова бланка за заглавната част на таблицата. Името на бланката ще бъде използвана по-късно. Пример:
    # Date Principle Monthly installments Taxes and commissions Remaining
    Principle
    Interest Principle Amount

    ✎ Генерирайте таблицата, използвайки следния синтаксис:
    ~#invoice_items^table_with_custom_header:thead_template;~name~ ~qty~ ~price_per_unit~ ~discount~ ~line_total~#~​
    Където:
    ✎ table_with_custom_header - името на оформлението
    ✎ thead_template - името на бланката, създадена, както е описано в точка 1
    ✎ ~name~ ~qty~ ~price_per_unit~ ~discount~ ~line_total~ - името на колоните. Може да се пропусне.
Показване на стойност в случай, че съществува
Затварящ символ:
~?variable; ?~​
~?variable; displayed if set ^ displayed if not set ?~​
Пример:
~?description; This is a description: ~~description~~ ?~​
В случай, че не съществува:
~?description; This is a description: ^ Text displayed in case description is not set ~~description~~ ?~​

Показване на променливи, съдържащи HTML код
Функция: open_template
Пример:
{{ open_template (index $.MainRecord "comment") }}​
Функция
~.function_name^param1,param2,......~​
Пример:
~.translate^bottle.~​

Друг пример:

~.utranslate^ ~category_id~ .~
~.sum^ ~num1~ 0 .~

Променливите са затворени с ~

Импортиране на бланка
Можете да импортирате една бланка в друга, използвайки следния синтаксис:
~.import^template_name.~​

Където "template_name" iе името на бланката, която искате да импортирате
Друго приложение: Можете да използвате езика за шаблони Hugo, за да имплементирате вашите персонализирани логики във вашите бланки

Форматиране на дата

✎ Форматиране на дата и час

Пример: 
~.format_time_to_date^~created_at~.~
~.format_time_to_minute^~created_at~.~